<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<link rel="STYLESHEET" href="lib.css" type='text/css' />
<link rel="SHORTCUT ICON" href="../icons/pyfav.png" type="image/png" />
<link rel='start' href='../index.html' title='Python documentation Index' />
<link rel="first" href="lib.html" title='Python library Reference' />
<link rel='contents' href='contents.html' title="Contents" />
<link rel='index' href='genindex.html' title='Index' />
<link rel='last' href='about.html' title='About this document...' />
<link rel='help' href='about.html' title='About this document...' />
<link rel="next" href="node695.html" />
<link rel="prev" href="tkinter-setting-options.html" />
<link rel="parent" href="node692.html" />
<link rel="next" href="node695.html" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name='aesop' content='information' />
<title>20.1.6.2 The Packer</title>
</head>
<body>
<div class="navigation">
<div id='top-navigation-panel' xml:id='top-navigation-panel'>
<table align="center" width="100%" cellpadding="0" cellspacing="2">
<tr>
<td class='online-navigation'><a rel="prev" title="20.1.6.1 setting Options"
  href="tkinter-setting-options.html"><img src='../icons/previous.png'
  border='0' height='32'  alt='Previous Page' width='32' /></a></td>
<td class='online-navigation'><a rel="parent" title="20.1.6 handy Reference"
  href="node692.html"><img src='../icons/up.png'
  border='0' height='32'  alt='Up one Level' width='32' /></a></td>
<td class='online-navigation'><a rel="next" title="20.1.6.3 packer Options"
  href="node695.html"><img src='../icons/next.png'
  border='0' height='32'  alt='Next Page' width='32' /></a></td>
<td align="center" width="100%">Python Library Reference</td>
<td class='online-navigation'><a rel="contents" title="Table of Contents"
  href="contents.html"><img src='../icons/contents.png'
  border='0' height='32'  alt='Contents' width='32' /></a></td>
<td class='online-navigation'><a href="modindex.html" title="Module Index"><img src='../icons/modules.png'
  border='0' height='32'  alt='Module Index' width='32' /></a></td>
<td class='online-navigation'><a rel="index" title="Index"
  href="genindex.html"><img src='../icons/index.png'
  border='0' height='32'  alt='Index' width='32' /></a></td>
</tr></table>
<div class='online-navigation'>
<b class="navlabel">Previous:</b>
<a class="sectref" rel="prev" href="tkinter-setting-options.html">20.1.6.1 Setting Options</a>
<b class="navlabel">Up:</b>
<a class="sectref" rel="parent" href="node692.html">20.1.6 Handy Reference</a>
<b class="navlabel">Next:</b>
<a class="sectref" rel="next" href="node695.html">20.1.6.3 Packer Options</a>
</div>
<hr /></div>
</div>
<!--End of Navigation Panel-->

<h3><a name="SECTION0022162000000000000000">
20.1.6.2 The Packer</a>
</h3> <a id='l2h-4703' xml:id='l2h-4703'></a>

<p>
The packer is one of Tk's geometry-management mechanisms.  

<p>
Geometry managers are used to specify the relative positioning of the
positioning of widgets within their container - their mutual
<em>master</em>.  In contrast to the more cumbersome <em>placer</em>
(which is used less commonly, and we do not cover here), the packer
takes qualitative relationship specification - <em>above</em>, <em>to
the left of</em>, <em>filling</em>, etc - and works everything out to
determine the exact placement coordinates for you. 

<p>
The size of any <em>master</em> widget is determined by the size of
the "slave widgets" inside.  The packer is used to control where slave
widgets appear inside the master into which they are packed.  You can
pack widgets into frames, and frames into other frames, in order to
achieve the kind of layout you desire.  Additionally, the arrangement
is dynamically adjusted to accommodate incremental changes to the
configuration, once it is packed.

<p>
Note that widgets do not appear until they have had their geometry
specified with a geometry manager.  It's a common early mistake to
leave out the geometry specification, and then be surprised when the
widget is created but nothing appears.  A widget will appear only
after it has had, for example, the packer's <tt class="method">pack()</tt> method
applied to it.

<p>
The pack() method can be called with keyword-option/value pairs that
control where the widget is to appear within its container, and how it
is to behave when the main application window is resized.  Here are
some examples:

<p>
<div class="verbatim"><pre>
    fred.pack()                     # defaults to side = "top"
    fred.pack(side = "left")
    fred.pack(expand = 1)
</pre></div>

<p>

<div class="navigation">
<div class='online-navigation'>
<p></p><hr />
<table align="center" width="100%" cellpadding="0" cellspacing="2">
<tr>
<td class='online-navigation'><a rel="prev" title="20.1.6.1 setting Options"
  href="tkinter-setting-options.html"><img src='../icons/previous.png'
  border='0' height='32'  alt='Previous Page' width='32' /></a></td>
<td class='online-navigation'><a rel="parent" title="20.1.6 handy Reference"
  href="node692.html"><img src='../icons/up.png'
  border='0' height='32'  alt='Up one Level' width='32' /></a></td>
<td class='online-navigation'><a rel="next" title="20.1.6.3 packer Options"
  href="node695.html"><img src='../icons/next.png'
  border='0' height='32'  alt='Next Page' width='32' /></a></td>
<td align="center" width="100%">Python Library Reference</td>
<td class='online-navigation'><a rel="contents" title="Table of Contents"
  href="contents.html"><img src='../icons/contents.png'
  border='0' height='32'  alt='Contents' width='32' /></a></td>
<td class='online-navigation'><a href="modindex.html" title="Module Index"><img src='../icons/modules.png'
  border='0' height='32'  alt='Module Index' width='32' /></a></td>
<td class='online-navigation'><a rel="index" title="Index"
  href="genindex.html"><img src='../icons/index.png'
  border='0' height='32'  alt='Index' width='32' /></a></td>
</tr></table>
<div class='online-navigation'>
<b class="navlabel">Previous:</b>
<a class="sectref" rel="prev" href="tkinter-setting-options.html">20.1.6.1 Setting Options</a>
<b class="navlabel">Up:</b>
<a class="sectref" rel="parent" href="node692.html">20.1.6 Handy Reference</a>
<b class="navlabel">Next:</b>
<a class="sectref" rel="next" href="node695.html">20.1.6.3 Packer Options</a>
</div>
</div>
<hr />
<span class="release-info">Release 2.5.1, documentation updated on 18th April, 2007.</span>
</div>
<!--End of Navigation Panel-->
<address>
See <i><a href="about.html">About this document...</a></i> for information on suggesting changes.
</address>
</body>
</html>
